unit u_Teacher_frame;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, StdCtrls, ExtCtrls,u_Core;

type

  { Tf_Teacher_frame }

  Tf_Teacher_frame = class(TFrame)
    lb_Students: TListBox;
    lb_Tests: TListBox;
    p_Lists: TPanel;
    p_Buttons: TPanel;
    Splitter1: TSplitter;
    Splitter2: TSplitter;
  private
    { private declarations }
  public
    { public declarations }
    l_Tests:TList;
    l_Students:TList;
    procedure p_Fill_tests_list();
    procedure p_Fill_students_list();
  end;

implementation

{$R *.lfm}

procedure Tf_Teacher_frame.p_Fill_tests_list(); //Заполнения листбокса названиями тестов
var
  i:integer;
  core_error:T_Core_errors;
  test_status:T_test_status;
  s_test_name:string;
begin
  if l_Tests=nil then                  //Если список не создан, создаём
     l_Tests:=TList.Create
  else
    l_Tests.Clear;                    //Иначе  очищаем тот, что есть
  core_error:=user.f_Get_tests_list(l_Tests);   //вызываем процедуру заполнения списка // Не очень мне нравится такой ход - передача указателя в параметры
  for i:=0 to l_Tests.Count-1 do                //Для каждого элемента списка проверяем статус теста
  begin                                         // Добавляем имя теста в листбокс, если тест пройден, приписываем 'ПРОЙДЕН'
    core_error:=Ttest(l_Tests.Items[i]).f_Get_status(test_status);
    case test_status of
      COMPLETE:
        begin
          core_error:=TTest(l_Tests.Items[i]).f_Get_name(s_test_name);
          lb_Tests.Items.Add(s_test_name+'(Пройден)'); //вообще хотели цветами помечать, но там не так просто как хотелось бы.
        end;
      AVAILABLE:        //а ещё можно не статусы, а баллы писать и по темам разделять или ещё по каким-то параметрам
        begin
          core_error:=TTest(l_Tests.Items[i]).f_Get_name(s_test_name);
          lb_Tests.Items.Add(s_test_name);
        end;
      else lb_Tests.Items.Add('Ошибка'); //если тип доступа не такой, как ожидалось, пишем в листбокс ошибку.
    end;
  end;
end;

procedure Tf_Teacher_frame.p_Fill_students_list();
var
  i:integer;
  core_error:T_Core_errors;
begin
     //
end;

end.

